package com.tedu.api;

import org.junit.jupiter.api.Test;

/**
 * Java万物皆对象--》真的是面向对象--->不全是  八大基本数据类型
 * 对象  类--创建对才能够，调用属性，方法
 *
 *   int         Integer       java.lang   继承Number
 *   long        Long          java.lang   继承Number
 *   double      Double        java.lang   继承Number
 *   short       Short         java.lang   继承Number
 *   float       Float         java.lang   继承Number
 *   byte        Byte          java.lang   继承Number
 *   char        Char          java.lang   继承Object
 *   boolean     Boolean       java.lang   继承Object
 *
 */
public class Packing {
    @Test
    public void test(){
        int i=1;  //不是面向对象
        Integer a=new Integer(i);
        a.toString();
    }
    /**
     * 包装API
     * 抽象类 Number 父类：Integer，Long,Double,Short,Float,Byte,
     * xxxValue抽象方法：把基本数据类型转换成包装类的方法
     * intValue方法   返回int变量
     * longValue方法  返回long变量
     * doubleValue=方法 返回double变量
     * shortValue方法 返回short变量
     * floatValue方法  返回float变量
     * byteValue方法   返回byte变量
     * 需求 把以上的6个数据类型，转换包装类，输出基本数据类型
     *
     */
    @Test
    public void testValue(){
        //int打包  包装类    取出  从包装类获取基础数据类型
        Integer i=new Integer("123");
        int is=i.intValue();

        Integer si=new Integer("123");

        System.out.println("Integer包装类"+is);
        //对比：值
        System.out.println("Integer包装类"+si);
        //.equals 对比对象  确定对象是否有值【包装类--实际类】
        //其他五个基础数据类型包装类--打包--拆包
        /*
        *
         * public class Person{
         *          Integer id；
         *          Double money；
         *
         * }
         * id.intValue();
         * money.int value();
         */
    }
    /**
     * xxx value 抽象方法 -------6个基础类型的包装类
     *                         包装类.valueOf("对应类型“）
     *                         静态方法【打包，拆包】
     * 打包：对应包装类中存对应的类型
     * 拆包：对应包装类，类型，取出
     */
    @Test
    public void testValueOf(){
        int i=Integer.valueOf("123"); //类名点出来：静态方法【Number抽象类】
        double d=Double.valueOf("123.123");
        boolean b=Boolean.valueOf("true");
        char c=Character.valueOf('i');
    }

    /**
     * parseXXX   静态方法    重点Servlet  JavaWeb
     * 作用：将字符串转换为对应的类型：
     * 参数  字符串  给字符串转换为对应数据类型
     * 注意：字符串随便写，不可以随便解析成对应类型
     */
    @Test
    public void testParseXXX(){
        //1.把基本数据类型转换为字符串  2.转换为字符串
        String s=String.valueOf("2");
        //2.把字符串转换为基础数据类型方法   需要解析出来
        String s2="2x";
        System.out.println(s2+"打桩");
    //    int i=Integer.parseInt(s2);  //NumberFormatException 数值格式异常 解析错误
        //需求：把s3~s6，正确解析出来
    String s3="123.123";
    float f=Float.parseFloat(s3);
    String s4="true";
    boolean b=Boolean.parseBoolean(s4);
    String s5="10L"; //加L无法表示long 符合三种类型 Integer Byte
  //  long l=Long.parseLong(s5);
    String s6="a";
  //       byte byt=Byte.parseByte(s6);
  //      System.out.println(nyt);
  //总结： 1.字符类，无法正确的解析成对应类型，不存在char字符
  //        2.字面量L/F，认为这是一个字符串，解析失败
    }
    /**
     * 包装类 自动拆装包
     * JDK1.5 新特性  2004
     * JDK1.5之后没有自动拆装箱
     */
    @Test
    public void test01(){
        //JDK1.5 之前
        Integer in =Integer.valueOf("1");//输入类型转换为Integer


        int i= in.intValue();
        //JDK1.5之后
        Integer it=1; //装箱
        int is=it;    //拆箱
        //自动拆装箱实际上，把拆箱与装箱德步骤交给idea执行
    }
}
